﻿Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports WisSensorNLibLib


Public Class AltaDePersonas
    Inherits System.Web.UI.Page
    Private WithEvents msensor As WisSensorN

    Private Const MaxUser As Integer = 10
    Private WisObj As New WisSensorN
    Private DB As String() = New String(MaxUser - 1) {}
    Private nEnrolled As Integer = 0
    Private indx As String
    Private msg As String
    Private ClavePAraLoguearse As String

    Private Sub OcultaMsjeDeguardar()

        LblMsjeALGuardar.Text = ""
        LblMsjeALGuardar.Visible = False

    End Sub
    Private Sub MuestraCartel_de_errorAlguardar(ByVal Msaje As String)




        LblMsjeALGuardar.Text = Msaje
        LblMsjeALGuardar.Visible = True




    End Sub
    Private Function validaDireccionDeMail() As Boolean

        If TxtMail.Text <> "" Then

            If InStr(TxtMail.Text, "@", CompareMethod.Text) = 0 Then
                validaDireccionDeMail = False
                Exit Function
            End If

            If InStr(TxtMail.Text, ".", CompareMethod.Text) = 0 Then
                validaDireccionDeMail = False
                Exit Function
            End If

            If InStr(TxtMail.Text, ".com", CompareMethod.Text) = 0 Then
                validaDireccionDeMail = False
                Exit Function
            End If


            ''si llego hasta aca es q ta tod bien 
            validaDireccionDeMail = True
        Else
            validaDireccionDeMail = False
        End If

    End Function


    Private Sub LimpiaCampos()

        TxtNombre.Text = ""
        TxtApellido.Text = ""
        txtDNI.Text = ""
        TxtFechaNac.Text = ""
        MuestraCartel("Se guardaron los datos correctamente", Label1)


        Rb_Max.Checked = True

        TxtUbicacion.Text = ""
        txtnumero.Text = ""
        TXtPiso.Text = ""
        txtdpto.Text = ""

        TxtMail.Text = ""

        TxtCelular.Text = ""
        Txttelefono.Text = ""

        txtCodPostal.Text = ""

        chkGeneraDniProvisorio.Checked = False

        txtHuella.Text = ""


        Panel_conf_usuarioYcontr.Visible = False

    End Sub

    Private Function RealizaCargaDeDatos() As Boolean
        Dim param(18) As ADODB.Parameter


        ''genero la clave aleatoria 
        ClavePAraLoguearse = FG.GeneraClve_alatoria()
        ''''''''''''''''''''''''''


        param(0) = New ADODB.Parameter
        param(0).Name = "@nombre"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = TxtNombre.Text
        param(0).Size = 50

        param(1) = New ADODB.Parameter
        param(1).Name = "@apellido"
        param(1).Type = ADODB.DataTypeEnum.adVarChar
        param(1).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(1).Value = TxtApellido.Text
        param(1).Size = 50

        param(2) = New ADODB.Parameter
        param(2).Name = "@dni"
        param(2).Type = ADODB.DataTypeEnum.adVarChar
        param(2).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(2).Value = txtDNI.Text
        param(2).Size = 10

        param(3) = New ADODB.Parameter
        param(3).Name = "@FechNac"
        param(3).Type = ADODB.DataTypeEnum.adDate '<--campo fecha
        param(3).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(3).Value = TxtFechaNac.Text


        param(4) = New ADODB.Parameter
        param(4).Name = "@nacionalidad"
        param(4).Type = ADODB.DataTypeEnum.adVarChar
        param(4).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(4).Value = CboNacionalidad.Text
        param(4).Size = 50



        param(5) = New ADODB.Parameter
        param(5).Name = "@sexo"
        param(5).Type = ADODB.DataTypeEnum.adVarChar
        param(5).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(5).Value = IIf(Rb_Max.Checked = True, "M", "F")
        param(5).Size = 1

        param(6) = New ADODB.Parameter
        param(6).Name = "@tel"
        param(6).Type = ADODB.DataTypeEnum.adVarChar
        param(6).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(6).Value = Txttelefono.Text
        param(6).Size = 50

        param(7) = New ADODB.Parameter
        param(7).Name = "@celular"
        param(7).Type = ADODB.DataTypeEnum.adVarChar
        param(7).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(7).Value = TxtCelular.Text
        param(7).Size = 50

        param(8) = New ADODB.Parameter
        param(8).Name = "@huella"
        param(8).Type = ADODB.DataTypeEnum.adVarChar
        param(8).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(8).Value = txtHuella.Text
        param(8).Size = 8000

        param(9) = New ADODB.Parameter
        param(9).Name = "@direccion"
        param(9).Type = ADODB.DataTypeEnum.adVarChar
        param(9).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(9).Value = TxtUbicacion.Text
        param(9).Size = 50


        param(10) = New ADODB.Parameter
        param(10).Name = "@numero"
        param(10).Type = ADODB.DataTypeEnum.adVarChar
        param(10).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(10).Value = txtnumero.Text
        param(10).Size = 10

        param(11) = New ADODB.Parameter
        param(11).Name = "@provincia"
        param(11).Type = ADODB.DataTypeEnum.adVarChar
        param(11).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(11).Value = CboProvincia.Text
        param(11).Size = 50

        param(12) = New ADODB.Parameter
        param(12).Name = "@localidad"
        param(12).Type = ADODB.DataTypeEnum.adVarChar
        param(12).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(12).Value = CboLocalidad.Text
        param(12).Size = 50


        param(13) = New ADODB.Parameter
        param(13).Name = "@Piso"
        param(13).Type = ADODB.DataTypeEnum.adVarChar
        param(13).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(13).Value = TXtPiso.Text
        param(13).Size = 5

        param(14) = New ADODB.Parameter
        param(14).Name = "@dpto"
        param(14).Type = ADODB.DataTypeEnum.adVarChar
        param(14).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(14).Value = txtdpto.Text
        param(14).Size = 2

        param(15) = New ADODB.Parameter
        param(15).Name = "@codPostal"
        param(15).Type = ADODB.DataTypeEnum.adInteger
        param(15).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(15).Value = CInt(IIf(txtCodPostal.Text = "", "0", txtCodPostal.Text))



        param(16) = New ADODB.Parameter
        param(16).Name = "@Mail"
        param(16).Type = ADODB.DataTypeEnum.adVarChar
        param(16).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(16).Value = TxtMail.Text
        param(16).Size = 50



        param(17) = New ADODB.Parameter
        param(17).Name = "@UserNt"
        param(17).Type = ADODB.DataTypeEnum.adVarChar
        param(17).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(17).Value = Page.User.Identity.Name
        param(17).Size = 50

        param(18) = New ADODB.Parameter
        param(18).Name = "@ClaveParaLoguearse"
        param(18).Type = ADODB.DataTypeEnum.adVarChar
        param(18).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(18).Value = ClavePAraLoguearse
        param(18).Size = 50




        RealizaCargaDeDatos = Datos.Agregar("CargaPersonas_MD", param, "funcion q carga personas")



    End Function

    Private Sub CargaDatos()

        FG.CargaCombo("traerProvincias", CboProvincia)
        If CboProvincia.Text <> "" Then
            FG.CargaCombo("TraeLocalidadxProvincia_MD", CboLocalidad, CboProvincia.Text)
        End If


        FG.CargaCombo("traerPaises", CboNacionalidad)
        CboNacionalidad.SelectedValue = UCase("Argentina")




    End Sub


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            If Not IsPostBack Then
                FG.culturaPaginas()

                'cargo los combos. 
                CargaDatos()

                ''cartel de usuario y contraseña
                '  ModalPopupExtender1.Hide()


                'cartel de lector 
                ' mdlpopup.Hide()

                'Cargo páginas anterior y actual!!!
                Var_Globales.Setea_paginas("AltaDePersonas.aspx")


            Else
                If Request.Form("__EVENTTARGET") = "FechaNacimiento" Then
                    TxtFechaNac.Text = Request.Form("__EVENTARGUMENT")
                End If
            End If
        Catch ex As Exception
        End Try


    End Sub


    Protected Sub CboProvincia_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles CboProvincia.SelectedIndexChanged



        FG.CargaCombo("TraeLocalidadxProvincia_MD", CboLocalidad, CboProvincia.Text)



    End Sub



    Protected Sub cmdLimpiar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdLimpiar.Click


        LimpiaCampos()
    End Sub
    Private Function ValidaExistenciaDEhueya() As Boolean

        Dim param(0) As ADODB.Parameter
        Dim Rs As ADODB.Recordset



        param(0) = New ADODB.Parameter
        param(0).Name = "@Hueya"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = txtHuella.Text
        param(0).Size = 8000

        Rs = Datos.TraerTodos("BuscaSiExiteUNaHuella", param, " validaExistenCiaDeDNI")

        ValidaExistenciaDEhueya = CBool(Rs.Fields(0).Value.ToString())



    End Function
    Private Function validaExistenCiaDeDNI() As Boolean
        Dim param(0) As ADODB.Parameter
        Dim Rs As ADODB.Recordset



        param(0) = New ADODB.Parameter
        param(0).Name = "@dni"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = txtDNI.Text
        param(0).Size = 10

        Rs = Datos.TraerTodos("BuscaSiexisteUNDni_Md", param, " validaExistenCiaDeDNI")

        validaExistenCiaDeDNI = CBool(Rs.Fields(0).Value.ToString())






    End Function
    Private Function Asocia_huella() As Boolean

        Dim param(1) As ADODB.Parameter


        param(0) = New ADODB.Parameter
        param(0).Name = "@dni"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = txtDNI.Text
        param(0).Size = 255

        param(1) = New ADODB.Parameter
        param(1).Name = "@huella"
        param(1).Type = ADODB.DataTypeEnum.adVarChar
        param(1).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(1).Value = txtHuella.Text
        param(1).Size = 8000


        Asocia_huella = Datos.Agregar("AsociaHuellaCnDni_MD", param, "funcion que Asocia la huella")






    End Function

    Protected Sub CmdGuardar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CmdGuardar.Click
        Dim Resp As Single
        Dim FechaActual As Date = Date.Today


        'oculto el lblmsje de guardar
        OcultaMsjeDeguardar()
        ''''''''''''''''''''''''''

        '----------------hacemos las validaciones--->
        If FG.ValNombres(TxtNombre.Text) = False Then
            MuestraCartel_de_errorAlguardar("No se permiten numeros en el campo Nombre")
            Exit Sub
        End If

        If FG.ValNombres(TxtApellido.Text) = False Then
            MuestraCartel_de_errorAlguardar("No se permiten numeros en el campo Apellido")
            Exit Sub
        End If

        If txtDNI.Enabled = True Then
            If FG.ValCampoNumericos(txtDNI.Text, "DNI") = False Then
                MuestraCartel_de_errorAlguardar("hay un caracter no valido en el campo DNI")
                Exit Sub
            End If
        End If

        If Mid(txtDNI.Text, 1, 1) = "0" Then
            MuestraCartel_de_errorAlguardar("El dni no puede comenzar con 0")
            Exit Sub
        End If


        If txtnumero.Text = "" Then
            Resp = MsgBox("No ha informado el numero de la direccion,esta seguro que desea continuar?", MsgBoxStyle.YesNo, "Falta numero de direccion")
            If Resp <> 6 Then
                Exit Sub
            End If
        End If


        If TxtMail.Text <> "" Then
            If validaDireccionDeMail() = False Then
                MuestraCartel_de_errorAlguardar("Formato invalido en la direccion de mail")
                Exit Sub
            End If
        End If


        '----------------------------------
        'si el dni existe cargado me fijo si esta la huella 
        'si la huella no esta asocio el dni con la hueya y salgo!
        If validaExistenCiaDeDNI() = True Then

            If ValidaExistenciaDEhueya() = False And txtHuella.Text <> "" Then '--> si la huella no existe

                If Lector.IdentificaHUella_DevuelveDNI(txtHuella.Text) <> "" Then
                    MuestraCartel_de_errorAlguardar("la persona se encuentra cargada")
                    Exit Sub
                End If

                If Asocia_huella() = True Then
                    MuestraCartel_de_errorAlguardar("La persona ya se encontraba cargada, solo se asocio la huella")
                    Exit Sub
                Else
                    MsgBox("se produjo un error al querer asociar la huella con el dni de la persona", MsgBoxStyle.Critical, "ERROR")
                    Exit Sub
                End If

            Else
                MuestraCartel_de_errorAlguardar("La persona ya se encuentra cargada")

            End If


            Exit Sub
        End If
        '---fin validacion dni----------------




        If Len(TxtNombre.Text) < 3 Then
            MuestraCartel_de_errorAlguardar("No se especificado un nombre adecuado")
            Exit Sub
        End If

        If IsDate(TxtFechaNac.Text) = False Then
            MuestraCartel_de_errorAlguardar("El valor ingresado en el campo Fecha no es valido")
            Exit Sub

        Else
            If CDate(TxtFechaNac.Text) > Date.Today Then
                MuestraCartel_de_errorAlguardar("La fecha de nacimiento no puede ser superior a la actual")
                Exit Sub
            End If


        End If
        'este es el ultimo 

        '--------------------------------------------------




        If RealizaCargaDeDatos() = True Then
            'MuestraCartel_de_errorAlguardar("Se ingreso correctamente a la persona")



            lblusuario.Text = "Usuario:" & txtDNI.Text
            lblContraseña.Text = "Password:" & ClavePAraLoguearse

            'Enviar mail aca 
            Dim destinatario As String, asunto As String, cuerpomensaje As String

            destinatario = TxtMail.Text
            asunto = "Nuevo usuario"
            cuerpomensaje = "<html><body><b>Se ha creado en nuevo usuario</b> <br/> " + _
                                      "Usuario: " + lblusuario.Text + "<br/>contraseña: " + lblContraseña.Text + _
                                      "<br/>Para empezar a usar el sistema SCHC entre a www.schc-ar.com.ar<br/>" + _
                                      "<pre/><b>El equipo de SCHC.<pre/></b></body></html>"

            destinatario = FG.EnviarMail(destinatario, asunto, cuerpomensaje)

            If destinatario = "No hay mail registrado para notitificar el proceso" Then
                Label1.Text = Label1.Text + " pero, " + destinatario
            End If

            Panel_conf_usuarioYcontr.Visible = True

        Else
            MsgBox("se produjo un error al cargar en la base", MsgBoxStyle.Critical, "ERROR")

        End If

    End Sub


    Private Sub btnok_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnok.Click

        MsgBox("pepe")
    End Sub







    Private Function GenerarDniProvisorio() As String

        Dim Rs As ADODB.Recordset

        Rs = Datos.TraerTodos("GeneraDniProvisorio", Nothing, "alta persona- genearDniProvisorio")
        If Rs.RecordCount > 0 Then
            Rs.MoveFirst()
            GenerarDniProvisorio = Rs.Fields(0).Value.ToString

        End If

    End Function


    Protected Sub chkGeneraDniProvisorio_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkGeneraDniProvisorio.CheckedChanged

        If chkGeneraDniProvisorio.Checked = False Then
            txtDNI.Text = ""
            txtDNI.Enabled = True
        Else
            txtDNI.Text = GenerarDniProvisorio()
            txtDNI.Enabled = False
        End If

    End Sub

    Protected Sub Btn_Ok_UsuaYcontr_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Btn_Ok_UsuaYcontr.Click
        LimpiaCampos()
        Panel_conf_usuarioYcontr.Visible = False
    End Sub





    Protected Sub Btn_OK_Verdadero_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Btn_OK_Verdadero.Click

        Lector.CargaHuella_EN_TExt(txtHuella)
        mdlpopup.ViewStateMode = UI.ViewStateMode.Disabled

    End Sub

    Protected Sub btn_imprimir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_imprimir.Click
        LimpiaCampos()
        Panel_conf_usuarioYcontr.Visible = False
    End Sub

End Class
